home *** CD-ROM | disk | FTP | other *** search
- program Project1;
-
- {$APPTYPE CONSOLE}
-
- uses
- SysUtils,
- Windows,
- AALnkLst in 'AALnkLst.pas';
-
- function CompareValues(aItem1, aItem2 : pointer) : integer;
- var
- I1 : longint absolute aItem1;
- I2 : longint absolute aItem2;
- begin
- Result := I2 - I1;
- end;
-
- const
- SpeedCount = 1500000;
-
- var
- SList : TaaSingleList;
- DList : TaaDoubleList;
- Stack : TaaStack;
- Queue : TaaQueue;
- i : integer;
- Start : integer;
- Value : longint;
-
- begin
- try
- writeln('SINGLE LINKED LIST TEST');
- SList := TaaSingleList.Create;
- try
- {add 15 items}
- writeln('adding 15 items');
- SList.MoveBeforeFirst;
- for i := 1 to 15 do begin
- Value := Random(100);
- SList.InsertAfter(pointer(Value));
- SList.MoveNext;
- end;
- SList.MoveBeforeFirst;
- while SList.MoveNext do
- writeln(integer(SList.Examine));
- readln;
- {sort them}
- writeln('sorting items');
- SList.Sort(CompareValues);
- SList.MoveBeforeFirst;
- while SList.MoveNext do
- writeln(integer(SList.Examine));
- readln;
- {delete every other item}
- writeln('deleting every other item');
- SList.MoveBeforeFirst;
- while SList.MoveNext do
- if not SList.IsLast then
- SList.DeleteAfter;
- SList.MoveBeforeFirst;
- while SList.MoveNext do
- writeln(integer(SList.Examine));
- readln;
- {delete every other item}
- writeln('deleting every other item again');
- SList.MoveBeforeFirst;
- while SList.MoveNext do
- if not SList.IsLast then
- SList.DeleteAfter;
- SList.MoveBeforeFirst;
- while SList.MoveNext do
- writeln(integer(SList.Examine));
- readln;
- finally
- SList.Free;
- end;
-
- writeln('DOUBLE LINKED LIST TEST');
- DList := TaaDoubleList.Create;
- try
- {add 15 items}
- writeln('adding 15 items');
- DList.MoveBeforeFirst;
- for i := 1 to 15 do begin
- Value := Random(100);
- DList.InsertAfter(pointer(Value));
- DList.MoveNext;
- end;
- writeln('--fwd');
- DList.MoveBeforeFirst;
- DList.MoveNext;
- while not DList.IsAfterLast do begin
- writeln(integer(DList.Examine));
- DList.MoveNext;
- end;
- readln;
- writeln('--bkwd');
- DList.MoveAfterLast;
- DList.MovePrevious;
- while not DList.IsBeforeFirst do begin
- writeln(integer(DList.Examine));
- DList.MovePrevious;
- end;
- readln;
- {sort them}
- writeln('sorting items');
- DList.Sort(CompareValues);
- writeln('--fwd');
- DList.MoveBeforeFirst;
- DList.MoveNext;
- while not DList.IsAfterLast do begin
- writeln(integer(DList.Examine));
- DList.MoveNext;
- end;
- readln;
- writeln('--bkwd');
- DList.MoveAfterLast;
- DList.MovePrevious;
- while not DList.IsBeforeFirst do begin
- writeln(integer(DList.Examine));
- DList.MovePrevious;
- end;
- readln;
- {delete every other item}
- writeln('deleting every other item');
- DList.MoveBeforeFirst;
- while DList.MoveNext do
- DList.Delete;
- writeln('--fwd');
- DList.MoveBeforeFirst;
- DList.MoveNext;
- while not DList.IsAfterLast do begin
- writeln(integer(DList.Examine));
- DList.MoveNext;
- end;
- writeln('--bkwd');
- DList.MoveAfterLast;
- DList.MovePrevious;
- while not DList.IsBeforeFirst do begin
- writeln(integer(DList.Examine));
- DList.MovePrevious;
- end;
- readln;
- {delete every other item}
- writeln('deleting every other item again');
- DList.MoveBeforeFirst;
- while DList.MoveNext do
- DList.Delete;
- writeln('--fwd');
- DList.MoveBeforeFirst;
- DList.MoveNext;
- while not DList.IsAfterLast do begin
- writeln(integer(DList.Examine));
- DList.MoveNext;
- end;
- writeln('--bkwd');
- DList.MoveAfterLast;
- DList.MovePrevious;
- while not DList.IsBeforeFirst do begin
- writeln(integer(DList.Examine));
- DList.MovePrevious;
- end;
- readln;
- finally
- DList.Free;
- end;
-
- writeln('STACK TEST');
- Stack := TaaStack.Create;
- try
- writeln('pushing ', SpeedCount, ' items');
- Start := GetTickCount;
- for i := 1 to SpeedCount do
- Stack.Push(pointer(i));
- writeln('popping all items');
- i := SpeedCount;
- while Stack.Count <> 0 do begin
- if (i <> integer(Stack.Pop)) then
- raise Exception.Create('bad item in stack');
- dec(i);
- end;
- writeln('done (', GetTickCount-Start, ')');
- finally
- Stack.Free;
- end;
-
- writeln('QUEUE TEST');
- Queue := TaaQueue.Create;
- try
- writeln('enqueuing ', SpeedCount, ' items');
- Start := GetTickCount;
- for i := 1 to SpeedCount do
- Queue.Enqueue(pointer(i));
- writeln('dequeuing all items');
- i := 1;
- while Queue.Count <> 0 do begin
- if (i <> integer(Queue.Dequeue)) then
- raise Exception.Create('bad item in queue');
- inc(i);
- end;
- writeln('done (', GetTickCount-Start, ')');
- finally
- Queue.Free;
- end;
-
-
- except
- on E : Exception do
- writeln(E.Message);
- end;
- readln;
- end.
-